#ifndef GAMEMODEL_H
#define GAMEMODEL_H

////////  五子棋游戏  ////////

#include <vector>

//游戏类型，人人or人机
enum GameType{
    MAN,
    AI  //人机对战模式
};

enum GameStatus{
    PLAYING,
    WIN,
    DEAD
};

//棋盘尺寸
const int BOARD_GRAD_SIZE = 15;
const int MARGIN = 40; //棋盘边缘空隙
const int CHESS_RADIUS = 14; //棋子半径
const int MARK_SIZE = 8; //落子标记边长
const int BLOCK_SIZE = 38; //格子大小
const int POS_OFFSET = BLOCK_SIZE*0.25; //鼠标点击的模糊距离上限

const int AI_THINK_TIME = 100; //AI下棋思考时间

class GameModel{
public:
    GameModel();
public:
    //储存当前游戏棋盘和棋子的情况，空白为0，黑子1，白子-1
    std::vector<std::vector<int>> gameMapVec;

    //储存各个点位的评分情况，作为AI下棋依据
    std::vector<std::vector<int>> scoreMapVec;

    //标示下棋方，true黑
    bool playerFlag;

    GameType gameType; //游戏模式：人机  人人

    GameStatus gameStatus; //游戏状态

    void startGame(GameType type);

    void actionByPerson(int row, int col);
    void updateGameMap(int row, int col);
    bool isWin(int row,int col);
    void calculateScore(); //计算每格分数函数

    void actionByAI(int &clickRow,int &clickCol); //AI执行下棋
};

#endif // GAMEMODEL_H
